/*->h.tekint */

#define TEKW    4096
#define TEKMAXH 4096
#define TEKVISH 3120


#define TEKNOCURS  0
#define TEKVCURS   1
#define TEKGINCURS 2



#define TEKC1   0
#define TEKC2   1
#define TEKPOSN 2
#define TEKPARA 3
#define TEKSTR  4
#define TEKCHAR 5

#define TEKSTRSIZE 128


#define ESX(c) (((c)+0x100))


#define TEKRGB 1
#define TEKCMY 2
#define TEKHLS 3


typedef struct tekcstr
{
 int x;
 int y;
 int curs;
} tekcstr;


#define TEKNINDEX  16

#define TEKSTRLEN1 16


/*****************************************************************************/
/* Tektronix terminal external variables */

extern tekcstr tekc;                 /* cursor position */


extern int     tekbypassmode;        /* bypass mode ?    */
extern int     tekmode;              /* tek mode         */

extern int     tekbypasschar;        /* bypass character */
extern int     tekignoredels;        /* ignore deletes state */

extern int     tekmacrosenabled;     /* keyboard macros enabled ? */



extern int     teklinestyle;         /* current tek line style */
extern int     teklineindex;         /* colour index for lines */


extern int     tekfillindex;         /* -ve colour index +ve pattern */

extern int     tekbackindex;         /* index for background */

extern int     tekfont;              /* current tek font - an indedx to the 
                                      alpha text size to use on the graphics
                                      plane */

extern int     tekfontsize;          /* size of graph text */

extern int     tekfontindex;         /* graph text colour */


extern int     tekmarker;



extern int     tekdx;              /* amounts to step by after printing an */
extern int     tekdy;              /* alpha text character on the graphics */
                                   /* plane */


extern int     tekipen;             /* 0/1, plot points in point plot mode */


extern tekcstr tekgin;              /* coords for GIN cursor to appear at */
extern int     tekgstepn;           /* coors step for gin cursor */
extern int     tekgsteps;           /* coors step for gin cursor with SHIFT */


extern int     tekindex[TEKNINDEX]; /* RGB values for each index */


extern char tekeolstring[TEKSTRLEN1];
extern int  tekeolstringlen;

extern char tekeofstring[TEKSTRLEN1];
extern int  tekeofstringlen;

extern char tekpromptstring[TEKSTRLEN1];
extern int  tekpromptstringlen;


extern int  tekfirsteom;             /* first end of message indicator  */
extern int  teksecondeom;            /* second end of message indicator */

extern int  tekdefcolourmode;        /* HLS etc. */


/*****************************************************************************/
/* Tektronix terminal internal variables */

extern int  tekesc;
extern int  tekstate;
extern int  tekfirst;
extern int  teksecond;
extern int  tekparam;
extern int  tekparams;

extern int  tekaccseq;              /* used for accumulating position */
extern int  tekaccbits;

extern int  tekstrp;                /* used for accumulating strings */
extern char tekstr[TEKSTRSIZE];
extern int  tekstrlen;              /* length */

extern int  tekbyte;                /* single byte parameter */




extern char echostring[10];         /* used by echoplex mode          */
extern int  echopoi;

extern tekcstr tekmov;
extern tekcstr tekold;

extern int     tekpanel;            /* a panel is being defined */
extern int     tekpanelx;           /* coors of start of panel  */
extern int     tekpanely;
extern int     tekpanelboundary;    /* fill over boundary       */

extern int     tekbakpal;           /* RGB values for background */


/*****************************************************************************/
/* Tektronix terminal wimp variables */


extern int       tekopen;            /* tek window open ? */
extern int       tekupdate;          /* flag changes to screen contents */
extern int       tekcurstime;        /* time to change cursor at */

extern Draw_diag tekdiag;
extern Draw_diag teklast;



/*****************************************************************************/


extern void tekdrawinit(void);
extern void tekdrawfinish(void);
extern void tekdefcolours(void);
extern void tekstart(void);
extern void tekdoreset(void);

extern int tekos(int tekpt);
extern int tekeos(int tekpt);
extern int tekdrw(int tekpt);
extern int tekint(int tekpt);
extern int osunits(int ourunits);

extern void tekvarzoomlo(void);


extern void tekupdatecursor(tekcstr * oldx,tekcstr * new);
extern void tekupdatewindow(tekcstr * oldx,tekcstr * new);

extern void tekchar(int x,int y,int c);
extern void tekstring(int x,int y,char * string);
extern void tekmove(int x,int y);
extern void tekdraw(int x,int y);
extern void tekcircle(int x,int y,int radius);
extern void tekplot(int x,int y);
extern void teksetlinestyle(int style);
extern void teksetfontsize(int font);
extern void tekdump(int invert);
extern void tekendpanel(void);
extern void tekstartpanel(void);

extern void tekclglo(void);
extern void tekclg(void);
extern void teksaveold(void);

extern void tekdoenabletextplane(int enable);
extern void teksetindex(int * index,int value);

extern void picrend(wimp_box * box,Draw_diag diag,wimp_redrawstr * redrawstr);


extern void tekredrawprint(wimp_redrawstr * redrawstr);
extern void tekprintfile(int invert);
extern void tekrefreshbackground(void);
extern void tekdefineindex(int index[],int tekdefcolourmode);

/*->h.drawlib */

extern int  drawheadersize;

extern void closefont(Draw_diag * diag);
extern void vecmove(int x, int y,Draw_diag * diag);
extern void vecdraw(int x,int y,Draw_diag * diag);
extern void veclinecolour(int pal,Draw_diag * diag);
extern void veccurve(int x1,int y1,int x2,int y2,int x3,int y3,
                                                        Draw_diag * diag);
extern void vecfill(int fill);
extern void veclinestyle(int style,Draw_diag * diag);
extern void vectextsize(int xsize,int ysize,Draw_diag * diag);
extern void vecsym(int x,int y,int c,Draw_diag * diag);
extern void vectextcolour(int fpal,int bpal,Draw_diag * diag);
extern void doopen(Draw_diag * diag,int xsize,int ysize);
extern void cleardiag(Draw_diag * diag);
extern void opendiag(Draw_diag * diag,int xsize,int ysize);
extern void validdiag(Draw_diag * diag);
extern void closediag(Draw_diag * diag);
extern int  drawsavediag(char * filename,Draw_diag * diag1,Draw_diag * diag2);
extern void mergediag(Draw_diag * dsub,Draw_diag * dmain);
extern int  itemsdiag(Draw_diag * diag);
extern void invertdiag(Draw_diag * diag);
extern void vecfillcolour(int fillcolour,Draw_diag * diag,int offset);
extern void compactdiag(Draw_diag * dsub,Draw_diag * dmain);
